#include <stdio.h>

#include <string.h>
#include <stdlib.h>

// K
#define MAX 6
int main()
{
    int n = 0;

    while (scanf("%d", &n) != EOF)
    {
        int Max_Pos[MAX] = {0};
        int Min_Pos[MAX] = {0};
        int Max[MAX] = {0};
        int Min[MAX] = {0};
        for (int i = 0; i < MAX; ++i)
        {
            Max_Pos[i] = -1;
            Min_Pos[i] = -1;
            Max[i] = -999999;
            Min[i] = 999999;
        }
        int tmp = 0;
        int flag = 0;
        // 多的行列用于记录该行列最大/最小值的下标
        for (int i = 0; i < n; ++i)
        {
            for (int j = 0; j < n; ++j)
            {
                scanf("%d", &tmp);
                if (tmp > Max[i])
                {
                    Max[i] = tmp;
                    Max_Pos[i] = j;
                }
                if (tmp < Min[j])
                {
                    Min[j] = tmp;
                    Min_Pos[j] = i;
                }
            }
        }
        // 扫描
        for (int i = 0; i < n; ++i)
        {
            for (int j = 0; j < n; ++j)
            {
                if (Max_Pos[i] == j && Min_Pos[j] == i)
                {
                    printf("%d %d\n", i, j);
                    flag = 1;
                    break;
                }
            }
            if (flag)
            {
                break;
            }
        }
        if (!flag)
        {
            printf("NO\n");
        }
    }
    return 0;
}

// J
// int main()
// {
//     int n = 0;
//     while (scanf("%d", &n) != EOF)
//     {
//         int tmp = 0;
//         int flag = 0;
//         for (int i = 0; i < n; ++i)
//         {
//             for (int j = 0; j < n; ++j)
//             {
//                 scanf("%d", &tmp);
//                 if (i > j && tmp != 0)
//                 {
//                     flag = 1;
//                 }
//             }
//         }
//         printf("%s\n", flag ? "NO" : "YES");
//     }

//     return 0;
// }

// I
// int main()
// {
//     int m = 0;
//     int n = 0;
//     while (scanf("%d %d", &m, &n) != EOF)
//     {
//         int matrix1[10][10] = {0};
//         int matrix2[10][10] = {0};
//         for (int i = 0; i < m; ++i)
//         {
//             for (int j = 0; j < n; ++j)
//             {
//                 scanf("%d", &(matrix1[i][j]));
//             }
//         }
//         for (int i = 0; i < n; ++i)
//         {
//             for (int j = 0; j < m; ++j)
//             {
//                 scanf("%d", &(matrix2[i][j]));
//             }
//         }

//         for (int i = 0; i < m; ++i)
//         {
//             for (int j = 0; j < m; ++j)
//             {
//                 int tmp = 0;
//                 for (int k = 0; k < n; ++k)
//                 {
//                     tmp += matrix1[i][k] * matrix2[k][j];
//                 }
//                 printf("%d ", tmp);
//             }
//             printf("\n");
//         }
//     }
//     return 0;
// }

// H
// int main()
// {
//     int m = 0;
//     while (scanf("%d", &m) != EOF)
//     {
//         int sum1 = 0;
//         int sum2 = 0;
//         int tmp = 0;
//         for (int i = 0; i < m; ++i)
//         {
//             for (int j = 0; j < m; ++j)
//             {
//                 scanf("%d", &tmp);
//                 if (i == j)
//                     sum1 += tmp;
//                 if (i + j == m - 1)
//                     sum2 += tmp;
//             }
//         }
//         printf("%d %d\n", sum1, sum2);
//     }
//     return 0;
// }
